Skip to content

New Crowdin updates#497

Closed
steveiliop56 wants to merge 76 commits intomainfrom
l10n_main
Closed

New Crowdin updates#497
steveiliop56 wants to merge 76 commits intomainfrom
l10n_main

Conversation

@steveiliop56
Copy link
Copy Markdown
Member

@steveiliop56 steveiliop56 commented Dec 4, 2025

Summary by CodeRabbit

  • Localization
    • Expanded and updated translations across many locales for login, OAuth redirects, logout, TOTP, unauthorized, not-found, password recovery, domain warnings, and form errors.
    • Added a new informational error line (errorSubtitleInfo) alongside updated actionable error text in multiple locales.
  • New Content
    • Added authorization/consent copy and OpenID scope descriptions (authorize flow: prompts, loading, success, error/missing-params) across numerous locales.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Dec 4, 2025

📝 Walkthrough

Walkthrough

Added and updated localization strings across many frontend locale JSON files: introduced an authorization/consent keyset (authorize*, scope descriptions), added errorSubtitleInfo and adjusted errorSubtitle, and localized numerous login/OAuth/redirect/unauthorized/TOTP strings per locale.

Changes

Cohort / File(s) Summary
Bulk authorize + error keys
frontend/src/lib/i18n/locales/*.json
Added authorization/consent keys (authorize*) and scope descriptions (openidScope*, emailScope*, profileScope*, groupsScope*) and added errorSubtitleInfo across many locale files; updated errorSubtitle where present.
Per-locale translation updates
frontend/src/lib/i18n/locales/it-IT.json, hu-HU.json, de-DE.json, cs-CZ.json, uk-UA.json, pt-PT.json, tr-TR.json, nl-NL.json, af-ZA.json, ar-SA.json, ca-ES.json, da-DK.json, el-GR.json, es-ES.json, fi-FI.json, fr-FR.json, he-IL.json, ja-JP.json, ko-KR.json, no-NO.json, pl-PL.json, pt-BR.json, ro-RO.json, ru-RU.json, sr-SP.json, sv-SE.json, vi-VN.json, zh-CN.json, zh-TW.json
Localized or updated many login/OAuth/redirect/unauthorized/TOTP strings; added authorize* and scope keys and adjusted error subtitle text. Verify placeholder usage ({{app}}, {{missingParams}}) and pluralization where applicable.
English canonical
frontend/src/lib/i18n/locales/en-US.json
Introduced canonical authorize* keyset and errorSubtitleInfo; updated errorSubtitle to reference browser console/app logs — serves as source phrasing for other locales.
Structural / potential JSON churn
frontend/src/lib/i18n/locales/da-DK.json, vi-VN.json, sr-SP.json, ru-RU.json, it-IT.json, nl-NL.json
Diffs show reordering or re-insertion of keys like goToCorrectDomainTitle and trailing-comma/brace adjustments; check for accidental duplicate keys or JSON syntax issues.
Files with substantial new translations
frontend/src/lib/i18n/locales/hu-HU.json, uk-UA.json, pt-PT.json, tr-TR.json, it-IT.json
Large per-locale translation additions for login and authorize flows — review language accuracy and consistency with en-US canonical strings.

Sequence Diagram(s)

(omitted)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐇
I nibble keys in tidy rows,
"Authorize" where the carrot grows.
Scopes and subtitles, neatly spun,
Translations hunted, all in one.
Hooray — the consent page hop is done!

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'New Crowdin updates' accurately reflects the main change: it updates localization files across 27 language locales with new translations and keys for authorization flows and error messaging.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch l10n_main

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@codecov
Copy link
Copy Markdown

codecov Bot commented Dec 4, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 19.12%. Comparing base (7bac1ac) to head (afb65b1).
⚠️ Report is 46 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #497      +/-   ##
==========================================
- Coverage   23.62%   19.12%   -4.50%     
==========================================
  Files          36       39       +3     
  Lines        2239     2295      +56     
==========================================
- Hits          529      439      -90     
- Misses       1673     1828     +155     
+ Partials       37       28       -9     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6b2cf3d and 4f8cf47.

📒 Files selected for processing (1)
  • frontend/src/lib/i18n/locales/hu-HU.json (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (go)

Comment on lines 2 to +4
"loginTitle": "Welcome back, login with",
"loginTitleSimple": "Welcome back, please login",
"loginDivider": "Or",
"loginUsername": "Username",
"loginPassword": "Password",
"loginSubmit": "Login",
"loginFailTitle": "Failed to log in",
"loginFailSubtitle": "Please check your username and password",
"loginFailRateLimit": "You failed to login too many times. Please try again later",
"loginSuccessTitle": "Logged in",
"loginSuccessSubtitle": "Welcome back!",
"loginTitleSimple": "Üdvözöljük, kérem jelentkezzen be",
"loginDivider": "Vagy",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Hungarian locale is still partially English (mixed-language UX)

loginTitle is still English while adjacent login strings are Hungarian; same pattern appears elsewhere (OAuth/continue/logout/not-found/TOTP/unauthorized sections). If this locale is intended to be fully localized, please translate the remaining English values or confirm this is an intentional incremental Crowdin sync.

🤖 Prompt for AI Agents
In frontend/src/lib/i18n/locales/hu-HU.json around lines 2–4, the "loginTitle"
value is still English while adjacent keys are Hungarian; update "loginTitle" to
the correct Hungarian translation, then scan the rest of hu-HU.json for other
remaining English strings (OAuth/continue/logout/not-found/TOTP/unauthorized
sections mentioned) and replace them with proper Hungarian translations or mark
them as intentionally untranslated; after changes, validate the JSON, run the
i18n/localization checks (or linter) and add a short commit message indicating
the translation fixes or that the mixed-language state is intentional for a
Crowdin sync.

Comment on lines +8 to +12
"loginFailTitle": "Sikertelen bejelentkezés",
"loginFailSubtitle": "Kérjük, ellenőrizze a felhasználónevét és jelszavát",
"loginFailRateLimit": "Túl sokszor próbálkoztál bejelentkezni. Próbáld újra később",
"loginSuccessTitle": "Bejelentkezve",
"loginSuccessSubtitle": "Üdvözöljük!",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Inconsistent formality (“tegezés” vs “magázás”) across translations

Examples: loginFailRateLimit uses informal (“próbálkoztál / próbáld”), while logoutFailSubtitle / unauthorizedButton use formal (“Próbálja”), and logoutSuccessSubtitle is informal (“Kijelentkeztél”). Please standardize tone (either consistently informal or formal) for Hungarian UI strings.

Also applies to: 28-32, 49-56

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4f8cf47 and 8ce382b.

📒 Files selected for processing (1)
  • frontend/src/lib/i18n/locales/de-DE.json (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (go)
🔇 Additional comments (3)
frontend/src/lib/i18n/locales/de-DE.json (3)

17-19: LGTM!

The OAuth auto-redirect translations are grammatically correct and maintain consistent formal address ("Sie" form).


23-27: LGTM!

The redirect-related translations are properly localized and grammatically correct.


56-61: LGTM!

The field validation and domain warning translations are accurate and grammatically correct.

"loginSubmit": "Anmelden",
"loginFailTitle": "Login fehlgeschlagen",
"loginFailSubtitle": "Bitte überprüfe deinen Benutzernamen und Passwort",
"loginFailSubtitle": "Bitte überprüfe Sie Ihren Benutzernamen und Passwort",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Grammatical error: verb conjugation mismatch.

"überprüfe Sie" incorrectly mixes the informal verb form ("überprüfe") with the formal pronoun ("Sie"). For consistency with the formal address used elsewhere, it should be "überprüfen Sie".

🔎 Apply this diff to fix the grammar:
-    "loginFailSubtitle": "Bitte überprüfe Sie Ihren Benutzernamen und Passwort",
+    "loginFailSubtitle": "Bitte überprüfen Sie Ihren Benutzernamen und Ihr Passwort",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"loginFailSubtitle": "Bitte überprüfe Sie Ihren Benutzernamen und Passwort",
"loginFailSubtitle": "Bitte überprüfen Sie Ihren Benutzernamen und Ihr Passwort",
🤖 Prompt for AI Agents
In frontend/src/lib/i18n/locales/de-DE.json around line 9, the German string
uses incorrect verb conjugation "überprüfe Sie"; replace that phrase with the
formal imperative "überprüfen Sie" so the entry becomes grammatically correct
(i.e., change "Bitte überprüfe Sie Ihren Benutzernamen und Passwort" to "Bitte
überprüfen Sie Ihren Benutzernamen und Passwort").

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 20

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
frontend/src/lib/i18n/locales/ja-JP.json (1)

1-81: ⚠️ Potential issue | 🟡 Minor

All strings in the ja-JP locale file are in English — no Japanese translations present.

Every key in this file, including all 22 newly added ones, contains English text rather than Japanese. This effectively means Japanese users will see the same text as the English locale, defeating the purpose of the ja-JP file.

If this is an intentional step in the Crowdin workflow (adding keys now, translating later), please confirm. Otherwise, this file should contain actual Japanese translations before merging.

frontend/src/lib/i18n/locales/ko-KR.json (1)

1-81: ⚠️ Potential issue | 🟡 Minor

All strings in ko-KR.json are in English — no Korean translations present.

Every value in this Korean locale file, both existing and newly added, is in English. If this is intentional (e.g., Crowdin syncing untranslated source strings as placeholders), this is fine as a starting point. However, if this file is expected to contain actual Korean translations, then the Crowdin sync may not be working correctly for this locale.

Please verify whether Korean translations are pending or if there's a configuration issue with Crowdin for this language.

frontend/src/lib/i18n/locales/he-IL.json (1)

1-81: ⚠️ Potential issue | 🟡 Minor

All strings in the Hebrew (he-IL) locale are in English — translations missing.

Every value in this file, including both the pre-existing and newly added keys, is in English rather than Hebrew. Since this is a Crowdin-generated PR, these are likely source-language placeholders awaiting translation. If the intent is to merge now and translate later, this is fine as a fallback, but users with Hebrew selected will see English text for the entire UI.

🤖 Fix all issues with AI agents
In `@frontend/src/lib/i18n/locales/ca-ES.json`:
- Around line 54-80: The locale file ca-ES.json currently contains English text
for keys such as "errorSubtitleInfo", "errorSubtitle", "forgotPasswordMessage",
"fieldRequired", "invalidInput", "domainWarningTitle", "domainWarningSubtitle",
"ignoreTitle", "goToCorrectDomainTitle", "authorizeTitle", "authorizeCardTitle",
"authorizeSubtitle", "authorizeSubtitleOAuth", "authorizeLoadingTitle",
"authorizeLoadingSubtitle", "authorizeSuccessTitle", "authorizeSuccessSubtitle",
"authorizeErrorClientInfo", "authorizeErrorMissingParams", "openidScopeName",
"openidScopeDescription", "emailScopeName", "emailScopeDescription",
"profileScopeName", "profileScopeDescription", and
"groupsScopeName"/"groupsScopeDescription"; replace each English string with the
correct Catalan translation for those keys (or, if these are intended
placeholders for later translation, add a clear comment/marker or use Crowdin
placeholder values to indicate they are untranslated) so the ca-ES.json file
contains proper Catalan entries before release.

In `@frontend/src/lib/i18n/locales/cs-CZ.json`:
- Around line 54-80: The Czech locale file left many values in English; update
the keys errorSubtitleInfo, domainWarningTitle/subtitle if needed, ignoreTitle,
goToCorrectDomainTitle, authorizeTitle, authorizeCardTitle, authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams, openidScopeName, openidScopeDescription,
emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, and groupsScopeDescription with proper
Czech translations; preserve interpolation tokens like {{app}} and
{{missingParams}} and any HTML markup such as <code> exactly as-is, keep JSON
string escaping valid, and ensure you update the values in the cs-CZ.json object
(e.g., keys authorizeCardTitle, authorizeErrorMissingParams) rather than adding
new keys or changing key names.

In `@frontend/src/lib/i18n/locales/da-DK.json`:
- Around line 54-80: Several newly added i18n keys in the Danish locale are
still in English; update the values for errorSubtitleInfo, errorSubtitle,
forgotPasswordMessage, fieldRequired, invalidInput, domainWarningTitle,
domainWarningSubtitle, ignoreTitle, goToCorrectDomainTitle, authorizeTitle,
authorizeCardTitle, authorizeSubtitle, authorizeSubtitleOAuth,
authorizeLoadingTitle, authorizeLoadingSubtitle, authorizeSuccessTitle,
authorizeSuccessSubtitle, authorizeErrorClientInfo, authorizeErrorMissingParams,
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName, and
groupsScopeDescription with proper Danish translations, preserving all
placeholders (e.g., {{appUrl}}, {{currentUrl}}, {{app}}, {{missingParams}}) and
inline markup/backticks exactly as in the originals so templates continue to
render correctly.

In `@frontend/src/lib/i18n/locales/es-ES.json`:
- Line 54: Several keys in the Spanish locale file are still in English (e.g.,
"errorSubtitleInfo" and keys from "authorizeTitle" through
"groupsScopeDescription"); update their values to proper Spanish translations or
mark them as intentionally pending translation. Open
frontend/src/lib/i18n/locales/es-ES.json, locate the keys errorSubtitleInfo and
authorizeTitle ... groupsScopeDescription, and replace the English strings with
accurate Spanish translations (or add a clear TODO comment/metadata indicating
they are queued for Crowdin) so the es-ES locale contains Spanish text or an
explicit fallback note.

In `@frontend/src/lib/i18n/locales/it-IT.json`:
- Around line 54-55: The listed keys are still in English and need Italian
translations: replace the values for "errorSubtitleInfo", "errorSubtitle" and
the block from "authorizeTitle" through "groupsScopeDescription" with proper
Italian text; locate these keys (errorSubtitleInfo, errorSubtitle,
authorizeTitle, authorizeDescription, authorizeConfirm, authorizeCancel,
authorizeScopesTitle, emailScopeDescription, profileScopeDescription,
groupsScopeDescription) in the it-IT locale and provide accurate Italian
translations, preserving punctuation, capitalization and any
interpolation/placeholders exactly as in the originals.

In `@frontend/src/lib/i18n/locales/nl-NL.json`:
- Line 55: The Dutch locale contains an untranslated English value for the key
"errorSubtitle" in nl-NL.json; replace the English string with an appropriate
Dutch translation (for example: "Er is een fout opgetreden bij het uitvoeren van
deze actie. Controleer de console voor meer informatie.") by updating the
"errorSubtitle" value so it matches the surrounding translated keys.

In `@frontend/src/lib/i18n/locales/no-NO.json`:
- Around line 62-80: The no-NO locale file currently contains English values for
keys such as "goToCorrectDomainTitle", "authorizeTitle", "authorizeCardTitle",
"authorizeSubtitle", "authorizeSubtitleOAuth", "authorizeLoadingTitle",
"authorizeLoadingSubtitle", "authorizeSuccessTitle", "authorizeSuccessSubtitle",
"authorizeErrorClientInfo", "authorizeErrorMissingParams", "openidScopeName",
"openidScopeDescription", "emailScopeName", "emailScopeDescription",
"profileScopeName", "profileScopeDescription", and
"groupsScopeName"/"groupsScopeDescription"; replace each English string with
proper Norwegian Bokmål translations for these keys (or, if you intend this to
be a placeholder until Crowdin provides translations, add a clear comment/flag
in the file indicating it is a placeholder and should not be treated as a
complete translation set) so the no-NO.json contains real Norwegian values or an
explicit placeholder marker.

In `@frontend/src/lib/i18n/locales/pt-BR.json`:
- Line 54: The pt-BR locale key "errorSubtitleInfo" currently contains an
English string; update its value to a proper Brazilian Portuguese translation
(e.g., "Ocorreu o seguinte erro ao processar sua solicitação:"), replacing the
English text so the pt-BR.json entry for errorSubtitleInfo is fully translated.
- Around line 63-80: Translate the untranslated English strings in the pt-BR
locale for the authorization and scope block: replace values for keys
authorizeTitle, authorizeCardTitle, authorizeSubtitle, authorizeSubtitleOAuth,
authorizeLoadingTitle, authorizeLoadingSubtitle, authorizeSuccessTitle,
authorizeSuccessSubtitle, authorizeErrorClientInfo, authorizeErrorMissingParams,
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName, and
groupsScopeDescription with accurate Brazilian Portuguese translations
preserving interpolation tokens like {{app}} and {{missingParams}} and keeping
punctuation and capitalization consistent with the rest of the file.

In `@frontend/src/lib/i18n/locales/ro-RO.json`:
- Around line 54-80: The ro-RO locale file currently contains English text for
every key (e.g., "errorSubtitleInfo", "forgotPasswordMessage",
"authorizeSubtitleOAuth", "openidScopeDescription", "groupsScopeDescription");
replace each English value with the correct Romanian translation for those keys
(or mark them explicitly as TODO/untranslated if you intend to keep
scaffolding), ensuring translations cover all keys in the diff
(errorSubtitleInfo, errorSubtitle, forgotPasswordMessage, fieldRequired,
invalidInput, domainWarningTitle, domainWarningSubtitle, ignoreTitle,
goToCorrectDomainTitle, authorizeTitle, authorizeCardTitle, authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams, openidScopeName, openidScopeDescription,
emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, groupsScopeDescription) so Romanian
users see localized UI or the file clearly indicates it’s intentionally
untranslated.

In `@frontend/src/lib/i18n/locales/ru-RU.json`:
- Around line 54-80: The Russian locale contains several untranslated English
strings; replace them with Russian translations for keys errorSubtitleInfo,
authorizeTitle, authorizeCardTitle (preserve {{app}}), authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams (preserve {{missingParams}}), and the scope keys
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName,
groupsScopeDescription so the UI is fully localized for ru-RU; ensure
placeholders like {{app}} and {{missingParams}} are kept intact and phrasing
matches existing Russian tone.

In `@frontend/src/lib/i18n/locales/sr-SP.json`:
- Around line 54-80: The new localization keys (errorSubtitleInfo,
goToCorrectDomainTitle, authorizeTitle, authorizeCardTitle, authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams, openidScopeName, openidScopeDescription,
emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, groupsScopeDescription) are still in
English; update their values to Serbian or add them to the Crowdin translation
queue so translators can provide Serbian strings—ensure you modify the JSON
entries (e.g., "errorSubtitleInfo": "...") with the translated text or mark them
for translation in the i18n workflow.

In `@frontend/src/lib/i18n/locales/sv-SE.json`:
- Around line 54-80: The Swedish locale file contains many untranslated English
strings (e.g., "errorSubtitleInfo", "errorSubtitle", "forgotPasswordMessage",
"fieldRequired", "invalidInput", "domainWarningTitle", "domainWarningSubtitle",
"ignoreTitle", "goToCorrectDomainTitle", "authorizeTitle", "authorizeCardTitle",
"authorizeSubtitle", "authorizeSubtitleOAuth", "authorizeLoadingTitle",
"authorizeLoadingSubtitle", "authorizeSuccessTitle", "authorizeSuccessSubtitle",
"authorizeErrorClientInfo", "authorizeErrorMissingParams", "openidScopeName",
"openidScopeDescription", "emailScopeName", "emailScopeDescription",
"profileScopeName", "profileScopeDescription", "groupsScopeName",
"groupsScopeDescription") that need Swedish translations; replace the English
values with proper Swedish translations for each key or confirm they are
submitted to the translation pipeline (Crowdin) and add placeholder markers if
necessary so the app can detect untranslated entries, then commit the updated
sv-SE.json with translated strings or translation-status markers.

In `@frontend/src/lib/i18n/locales/tr-TR.json`:
- Around line 54-55: The two keys errorSubtitleInfo and errorSubtitle in the
Turkish locale still contain English text; update their values to proper Turkish
translations so the tr-TR.json is consistent (replace the English strings for
errorSubtitleInfo and errorSubtitle with appropriate Turkish sentences conveying
"The following error occurred while processing your request:" and "An error
occurred while trying to perform this action. Please check the console for more
information.").
- Around line 63-80: The Turkish locale file contains untranslated English
strings for the authorize and scope entries; replace the values for keys
authorizeTitle, authorizeCardTitle, authorizeSubtitle, authorizeSubtitleOAuth,
authorizeLoadingTitle, authorizeLoadingSubtitle, authorizeSuccessTitle,
authorizeSuccessSubtitle, authorizeErrorClientInfo, authorizeErrorMissingParams,
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName, and
groupsScopeDescription with proper Turkish translations, preserving any
placeholders like {{app}} and {{missingParams}} exactly as-is and keeping
punctuation and capitalization consistent with the rest of the file.
- Line 25: The translation string continueInsecureRedirectSubtitle currently
reads "from <code>http</code> to <code>http</code>" which is incorrect; update
the value for continueInsecureRedirectSubtitle in tr-TR.json so the source
protocol is <code>https</code> (i.e., change the first <code>http</code> to
<code>https</code>) to match the English source and other locales.

In `@frontend/src/lib/i18n/locales/uk-UA.json`:
- Around line 54-55: The Ukrainian locale file has untranslated English values
for keys errorSubtitleInfo, errorSubtitle, authorizeTitle, authorizeSubtitle,
authorizeConfirm, authorizeCancel, authorizeCheckbox, scopesTitle, scopeMessages
(and the specific scope keys docsScope, filesScope, tokensScope, groupsScope,
groupsScopeDescription); replace the English strings for these keys with
accurate Ukrainian translations, preserving the JSON key names and punctuation,
ensuring proper UTF-8 encoding/escaping and trailing commas remain valid JSON,
and run the i18n/locale lint or build to verify no syntax or missing-key errors.

In `@frontend/src/lib/i18n/locales/vi-VN.json`:
- Around line 54-80: Most new keys in vi-VN.json (e.g., "errorSubtitleInfo",
"authorizeTitle", "authorizeCardTitle", "authorizeSubtitle",
"authorizeSubtitleOAuth", "authorizeLoadingTitle", "authorizeLoadingSubtitle",
"authorizeSuccessTitle", "authorizeSuccessSubtitle", "authorizeErrorClientInfo",
"authorizeErrorMissingParams", "openidScopeName", "openidScopeDescription",
"emailScopeName", "emailScopeDescription", "profileScopeName",
"profileScopeDescription", "groupsScopeName", "groupsScopeDescription") are
still in English; replace those values with proper Vietnamese translations or
explicitly mark them for translation in Crowdin so they don't ship untranslated,
and confirm the Crowdin config will ingest this vi-VN.json path (or add the keys
to the Crowdin source) so translators see them.

In `@frontend/src/lib/i18n/locales/zh-CN.json`:
- Line 54: The zh-CN locale file contains untranslated English values for keys
like "errorSubtitleInfo", "authorizeTitle", "authorizeCardTitle" and the
scope-related keys (lines ~63-80); update each of these keys in
frontend/src/lib/i18n/locales/zh-CN.json with appropriate Simplified Chinese
translations (or replace with a clear TODO/placeholder marker if you
intentionally defer translation) and ensure you add them to your translation
tracking (e.g., Crowdin) so they don’t ship untranslated.

In `@frontend/src/lib/i18n/locales/zh-TW.json`:
- Around line 54-80: Several keys in zh-TW are still English (e.g.,
"errorSubtitleInfo" and the
authorize*/openidScope*/emailScope*/profileScope*/groupsScope* keys); either
provide Traditional Chinese translations for those keys ("errorSubtitleInfo",
"authorizeTitle", "authorizeCardTitle", "authorizeSubtitle",
"authorizeSubtitleOAuth", "authorizeLoadingTitle", "authorizeLoadingSubtitle",
"authorizeSuccessTitle", "authorizeSuccessSubtitle", "authorizeErrorClientInfo",
"authorizeErrorMissingParams", "openidScopeName", "openidScopeDescription",
"emailScopeName", "emailScopeDescription", "profileScopeName",
"profileScopeDescription", "groupsScopeName", "groupsScopeDescription") or
remove those entries from the zh-TW JSON so i18next can fall back to the default
locale until proper translations are available. Ensure any replacements use
correct Traditional Chinese phrasing and keep interpolation tokens like {{app}}
and {{missingParams}} intact.

Comment on lines +54 to +80
"errorSubtitleInfo": "The following error occurred while processing your request:",
"errorSubtitle": "An error occurred while trying to perform this action. Please check the console for more information.",
"forgotPasswordMessage": "You can reset your password by changing the `USERS` environment variable.",
"fieldRequired": "This field is required",
"invalidInput": "Invalid input",
"domainWarningTitle": "Invalid Domain",
"domainWarningSubtitle": "This instance is configured to be accessed from <code>{{appUrl}}</code>, but <code>{{currentUrl}}</code> is being used. If you proceed, you may encounter issues with authentication.",
"ignoreTitle": "Ignore",
"goToCorrectDomainTitle": "Go to correct domain"
} No newline at end of file
"goToCorrectDomainTitle": "Go to correct domain",
"authorizeTitle": "Authorize",
"authorizeCardTitle": "Continue to {{app}}?",
"authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.",
"authorizeSubtitleOAuth": "Would you like to continue to this app?",
"authorizeLoadingTitle": "Loading...",
"authorizeLoadingSubtitle": "Please wait while we load the client information.",
"authorizeSuccessTitle": "Authorized",
"authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.",
"authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.",
"authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}",
"openidScopeName": "OpenID Connect",
"openidScopeDescription": "Allows the app to access your OpenID Connect information.",
"emailScopeName": "Email",
"emailScopeDescription": "Allows the app to access your email address.",
"profileScopeName": "Profile",
"profileScopeDescription": "Allows the app to access your profile information.",
"groupsScopeName": "Groups",
"groupsScopeDescription": "Allows the app to access your group information."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

All new strings are in English — Catalan translations pending.

Every string in this ca-ES.json file (both existing and newly added) is in English rather than Catalan. If this is intentional as a Crowdin placeholder awaiting translation, no action is needed. Otherwise, ensure the Catalan translations are provided before release.

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/ca-ES.json` around lines 54 - 80, The locale
file ca-ES.json currently contains English text for keys such as
"errorSubtitleInfo", "errorSubtitle", "forgotPasswordMessage", "fieldRequired",
"invalidInput", "domainWarningTitle", "domainWarningSubtitle", "ignoreTitle",
"goToCorrectDomainTitle", "authorizeTitle", "authorizeCardTitle",
"authorizeSubtitle", "authorizeSubtitleOAuth", "authorizeLoadingTitle",
"authorizeLoadingSubtitle", "authorizeSuccessTitle", "authorizeSuccessSubtitle",
"authorizeErrorClientInfo", "authorizeErrorMissingParams", "openidScopeName",
"openidScopeDescription", "emailScopeName", "emailScopeDescription",
"profileScopeName", "profileScopeDescription", and
"groupsScopeName"/"groupsScopeDescription"; replace each English string with the
correct Catalan translation for those keys (or, if these are intended
placeholders for later translation, add a clear comment/marker or use Crowdin
placeholder values to indicate they are untranslated) so the ca-ES.json file
contains proper Catalan entries before release.

Comment on lines +54 to +80
"errorSubtitleInfo": "The following error occurred while processing your request:",
"errorSubtitle": "Nastala chyba při pokusu o provedení této akce. Pro více informací prosím zkontrolujte konzolu.",
"forgotPasswordMessage": "Heslo můžete obnovit změnou proměnné `USERS`.",
"fieldRequired": "Toto pole je povinné",
"invalidInput": "Neplatný údaj",
"domainWarningTitle": "Invalid Domain",
"domainWarningSubtitle": "This instance is configured to be accessed from <code>{{appUrl}}</code>, but <code>{{currentUrl}}</code> is being used. If you proceed, you may encounter issues with authentication.",
"ignoreTitle": "Ignore",
"goToCorrectDomainTitle": "Go to correct domain"
} No newline at end of file
"goToCorrectDomainTitle": "Go to correct domain",
"authorizeTitle": "Authorize",
"authorizeCardTitle": "Continue to {{app}}?",
"authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.",
"authorizeSubtitleOAuth": "Would you like to continue to this app?",
"authorizeLoadingTitle": "Loading...",
"authorizeLoadingSubtitle": "Please wait while we load the client information.",
"authorizeSuccessTitle": "Authorized",
"authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.",
"authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.",
"authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}",
"openidScopeName": "OpenID Connect",
"openidScopeDescription": "Allows the app to access your OpenID Connect information.",
"emailScopeName": "Email",
"emailScopeDescription": "Allows the app to access your email address.",
"profileScopeName": "Profile",
"profileScopeDescription": "Allows the app to access your profile information.",
"groupsScopeName": "Groups",
"groupsScopeDescription": "Allows the app to access your group information."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Nearly all new keys are untranslated (English) in the Czech locale.

errorSubtitleInfo (Line 54) and all authorize*/scope keys (Lines 63–80) remain in English. Only loginOauthAutoRedirectTitle (Line 17) received an actual Czech translation in this update. These should be localized to Czech.

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/cs-CZ.json` around lines 54 - 80, The Czech
locale file left many values in English; update the keys errorSubtitleInfo,
domainWarningTitle/subtitle if needed, ignoreTitle, goToCorrectDomainTitle,
authorizeTitle, authorizeCardTitle, authorizeSubtitle, authorizeSubtitleOAuth,
authorizeLoadingTitle, authorizeLoadingSubtitle, authorizeSuccessTitle,
authorizeSuccessSubtitle, authorizeErrorClientInfo, authorizeErrorMissingParams,
openidScopeName, openidScopeDescription, emailScopeName, emailScopeDescription,
profileScopeName, profileScopeDescription, groupsScopeName, and
groupsScopeDescription with proper Czech translations; preserve interpolation
tokens like {{app}} and {{missingParams}} and any HTML markup such as <code>
exactly as-is, keep JSON string escaping valid, and ensure you update the values
in the cs-CZ.json object (e.g., keys authorizeCardTitle,
authorizeErrorMissingParams) rather than adding new keys or changing key names.

Comment on lines +54 to +80
"errorSubtitleInfo": "The following error occurred while processing your request:",
"errorSubtitle": "Der opstod en fejl under forsøget på at udføre denne handling. Tjek venligst konsollen for mere information.",
"forgotPasswordMessage": "You can reset your password by changing the `USERS` environment variable.",
"fieldRequired": "This field is required",
"invalidInput": "Invalid input",
"domainWarningTitle": "Invalid Domain",
"domainWarningSubtitle": "This instance is configured to be accessed from <code>{{appUrl}}</code>, but <code>{{currentUrl}}</code> is being used. If you proceed, you may encounter issues with authentication.",
"ignoreTitle": "Ignore",
"goToCorrectDomainTitle": "Go to correct domain"
} No newline at end of file
"goToCorrectDomainTitle": "Go to correct domain",
"authorizeTitle": "Authorize",
"authorizeCardTitle": "Continue to {{app}}?",
"authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.",
"authorizeSubtitleOAuth": "Would you like to continue to this app?",
"authorizeLoadingTitle": "Loading...",
"authorizeLoadingSubtitle": "Please wait while we load the client information.",
"authorizeSuccessTitle": "Authorized",
"authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.",
"authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.",
"authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}",
"openidScopeName": "OpenID Connect",
"openidScopeDescription": "Allows the app to access your OpenID Connect information.",
"emailScopeName": "Email",
"emailScopeDescription": "Allows the app to access your email address.",
"profileScopeName": "Profile",
"profileScopeDescription": "Allows the app to access your profile information.",
"groupsScopeName": "Groups",
"groupsScopeDescription": "Allows the app to access your group information."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Newly added keys are untranslated (English in a Danish locale file).

All new keys (errorSubtitleInfo, authorizeTitle, authorizeCardTitle, … through groupsScopeDescription) still contain English text. This is consistent with several other pre-existing untranslated keys in this file (e.g., lines 17–19, 23, 26–27, 56–62), so it appears to be a known pattern for this Crowdin-managed locale. Just flagging for visibility — these should eventually receive proper Danish translations.

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/da-DK.json` around lines 54 - 80, Several newly
added i18n keys in the Danish locale are still in English; update the values for
errorSubtitleInfo, errorSubtitle, forgotPasswordMessage, fieldRequired,
invalidInput, domainWarningTitle, domainWarningSubtitle, ignoreTitle,
goToCorrectDomainTitle, authorizeTitle, authorizeCardTitle, authorizeSubtitle,
authorizeSubtitleOAuth, authorizeLoadingTitle, authorizeLoadingSubtitle,
authorizeSuccessTitle, authorizeSuccessSubtitle, authorizeErrorClientInfo,
authorizeErrorMissingParams, openidScopeName, openidScopeDescription,
emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, and groupsScopeDescription with proper
Danish translations, preserving all placeholders (e.g., {{appUrl}},
{{currentUrl}}, {{app}}, {{missingParams}}) and inline markup/backticks exactly
as in the originals so templates continue to render correctly.

"forgotPasswordTitle": "¿Olvidó su contraseña?",
"failedToFetchProvidersTitle": "Error al cargar los proveedores de autenticación. Por favor revise su configuración.",
"errorTitle": "Ha ocurrido un error",
"errorSubtitleInfo": "The following error occurred while processing your request:",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

All newly added strings are untranslated (English in es-ES locale).

errorSubtitleInfo (Line 54) and every key from authorizeTitle through groupsScopeDescription (Lines 63–80) contain English text in the Spanish locale file. If Crowdin is expected to populate these asynchronously via translator contributions, this is fine as a temporary state — but worth confirming that the fallback-to-English behavior is intentional and that these keys are queued for translation.

Also applies to: 63-80

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/es-ES.json` at line 54, Several keys in the
Spanish locale file are still in English (e.g., "errorSubtitleInfo" and keys
from "authorizeTitle" through "groupsScopeDescription"); update their values to
proper Spanish translations or mark them as intentionally pending translation.
Open frontend/src/lib/i18n/locales/es-ES.json, locate the keys errorSubtitleInfo
and authorizeTitle ... groupsScopeDescription, and replace the English strings
with accurate Spanish translations (or add a clear TODO comment/metadata
indicating they are queued for Crowdin) so the es-ES locale contains Spanish
text or an explicit fallback note.

Comment on lines +54 to 55
"errorSubtitleInfo": "The following error occurred while processing your request:",
"errorSubtitle": "An error occurred while trying to perform this action. Please check the console for more information.",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

New keys errorSubtitleInfo and the entire authorize*/scope block are untranslated (English).

errorSubtitleInfo (Line 54), errorSubtitle (Line 55), and all keys from authorizeTitle through groupsScopeDescription (Lines 63–80) are in English. These should be translated to Italian to match the rest of the locale's progress.

Also applies to: 63-80

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/it-IT.json` around lines 54 - 55, The listed
keys are still in English and need Italian translations: replace the values for
"errorSubtitleInfo", "errorSubtitle" and the block from "authorizeTitle" through
"groupsScopeDescription" with proper Italian text; locate these keys
(errorSubtitleInfo, errorSubtitle, authorizeTitle, authorizeDescription,
authorizeConfirm, authorizeCancel, authorizeScopesTitle, emailScopeDescription,
profileScopeDescription, groupsScopeDescription) in the it-IT locale and provide
accurate Italian translations, preserving punctuation, capitalization and any
interpolation/placeholders exactly as in the originals.

Comment on lines +63 to +80
"authorizeTitle": "Authorize",
"authorizeCardTitle": "Continue to {{app}}?",
"authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.",
"authorizeSubtitleOAuth": "Would you like to continue to this app?",
"authorizeLoadingTitle": "Loading...",
"authorizeLoadingSubtitle": "Please wait while we load the client information.",
"authorizeSuccessTitle": "Authorized",
"authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.",
"authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.",
"authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}",
"openidScopeName": "OpenID Connect",
"openidScopeDescription": "Allows the app to access your OpenID Connect information.",
"emailScopeName": "Email",
"emailScopeDescription": "Allows the app to access your email address.",
"profileScopeName": "Profile",
"profileScopeDescription": "Allows the app to access your profile information.",
"groupsScopeName": "Groups",
"groupsScopeDescription": "Allows the app to access your group information."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

All authorize and scope strings are untranslated.

The entire block of authorize*, openid*, email*, profile*, and groups* keys (18 strings) remains in English. These need Turkish translations to match the rest of the locale file.

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/tr-TR.json` around lines 63 - 80, The Turkish
locale file contains untranslated English strings for the authorize and scope
entries; replace the values for keys authorizeTitle, authorizeCardTitle,
authorizeSubtitle, authorizeSubtitleOAuth, authorizeLoadingTitle,
authorizeLoadingSubtitle, authorizeSuccessTitle, authorizeSuccessSubtitle,
authorizeErrorClientInfo, authorizeErrorMissingParams, openidScopeName,
openidScopeDescription, emailScopeName, emailScopeDescription, profileScopeName,
profileScopeDescription, groupsScopeName, and groupsScopeDescription with proper
Turkish translations, preserving any placeholders like {{app}} and
{{missingParams}} exactly as-is and keeping punctuation and capitalization
consistent with the rest of the file.

Comment on lines +54 to 55
"errorSubtitleInfo": "The following error occurred while processing your request:",
"errorSubtitle": "An error occurred while trying to perform this action. Please check the console for more information.",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Untranslated English strings in Ukrainian locale file.

Lines 54–55 (errorSubtitleInfo, errorSubtitle) and lines 63–80 (authorizeTitle through groupsScopeDescription) contain English text instead of Ukrainian translations. Since this is the uk-UA locale, these should all be localized.

Also applies to: 63-80

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/uk-UA.json` around lines 54 - 55, The Ukrainian
locale file has untranslated English values for keys errorSubtitleInfo,
errorSubtitle, authorizeTitle, authorizeSubtitle, authorizeConfirm,
authorizeCancel, authorizeCheckbox, scopesTitle, scopeMessages (and the specific
scope keys docsScope, filesScope, tokensScope, groupsScope,
groupsScopeDescription); replace the English strings for these keys with
accurate Ukrainian translations, preserving the JSON key names and punctuation,
ensuring proper UTF-8 encoding/escaping and trailing commas remain valid JSON,
and run the i18n/locale lint or build to verify no syntax or missing-key errors.

Comment on lines +54 to +80
"errorSubtitleInfo": "The following error occurred while processing your request:",
"errorSubtitle": "Đã xảy ra lỗi khi thực hiện thao tác này. Vui lòng kiểm tra bảng điều khiển để biết thêm thông tin.",
"forgotPasswordMessage": "You can reset your password by changing the `USERS` environment variable.",
"fieldRequired": "This field is required",
"invalidInput": "Invalid input",
"domainWarningTitle": "Invalid Domain",
"domainWarningSubtitle": "This instance is configured to be accessed from <code>{{appUrl}}</code>, but <code>{{currentUrl}}</code> is being used. If you proceed, you may encounter issues with authentication.",
"ignoreTitle": "Ignore",
"goToCorrectDomainTitle": "Go to correct domain"
} No newline at end of file
"goToCorrectDomainTitle": "Go to correct domain",
"authorizeTitle": "Authorize",
"authorizeCardTitle": "Continue to {{app}}?",
"authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.",
"authorizeSubtitleOAuth": "Would you like to continue to this app?",
"authorizeLoadingTitle": "Loading...",
"authorizeLoadingSubtitle": "Please wait while we load the client information.",
"authorizeSuccessTitle": "Authorized",
"authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.",
"authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.",
"authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}",
"openidScopeName": "OpenID Connect",
"openidScopeDescription": "Allows the app to access your OpenID Connect information.",
"emailScopeName": "Email",
"emailScopeDescription": "Allows the app to access your email address.",
"profileScopeName": "Profile",
"profileScopeDescription": "Allows the app to access your profile information.",
"groupsScopeName": "Groups",
"groupsScopeDescription": "Allows the app to access your group information."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Most new strings are untranslated (still in English) for the vi-VN locale.

All newly added keys (errorSubtitleInfo, authorizeTitle through groupsScopeDescription, etc.) contain English text rather than Vietnamese translations. Since this is a Crowdin-managed PR, this may be intentional as placeholders awaiting translation — but it's worth confirming that Crowdin will pick these up for translator action so they don't ship untranslated indefinitely.

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/vi-VN.json` around lines 54 - 80, Most new keys
in vi-VN.json (e.g., "errorSubtitleInfo", "authorizeTitle",
"authorizeCardTitle", "authorizeSubtitle", "authorizeSubtitleOAuth",
"authorizeLoadingTitle", "authorizeLoadingSubtitle", "authorizeSuccessTitle",
"authorizeSuccessSubtitle", "authorizeErrorClientInfo",
"authorizeErrorMissingParams", "openidScopeName", "openidScopeDescription",
"emailScopeName", "emailScopeDescription", "profileScopeName",
"profileScopeDescription", "groupsScopeName", "groupsScopeDescription") are
still in English; replace those values with proper Vietnamese translations or
explicitly mark them for translation in Crowdin so they don't ship untranslated,
and confirm the Crowdin config will ingest this vi-VN.json path (or add the keys
to the Crowdin source) so translators see them.

"forgotPasswordTitle": "忘记密码?",
"failedToFetchProvidersTitle": "加载身份验证提供程序失败,请检查您的配置。",
"errorTitle": "发生了错误",
"errorSubtitleInfo": "The following error occurred while processing your request:",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Untranslated strings in zh-CN locale.

All newly added keys (errorSubtitleInfo, authorizeTitle, authorizeCardTitle, etc., and all scope-related keys) contain English text instead of Simplified Chinese translations. Chinese users will see English UI text for these strings.

If these are intentionally added as fallback placeholders pending Crowdin translation, consider tracking them so they don't ship untranslated for long.

Also applies to: 63-80

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/zh-CN.json` at line 54, The zh-CN locale file
contains untranslated English values for keys like "errorSubtitleInfo",
"authorizeTitle", "authorizeCardTitle" and the scope-related keys (lines
~63-80); update each of these keys in frontend/src/lib/i18n/locales/zh-CN.json
with appropriate Simplified Chinese translations (or replace with a clear
TODO/placeholder marker if you intentionally defer translation) and ensure you
add them to your translation tracking (e.g., Crowdin) so they don’t ship
untranslated.

Comment on lines +54 to +80
"errorSubtitleInfo": "The following error occurred while processing your request:",
"errorSubtitle": "執行此操作時發生錯誤。請檢查主控台以獲取更多資訊。",
"forgotPasswordMessage": "透過修改 `USERS` 環境變數,你可以重設你的密碼。",
"fieldRequired": "此為必填欄位",
"invalidInput": "無效的輸入",
"domainWarningTitle": "無效的網域",
"domainWarningSubtitle": "此服務設定為透過 <code>{{appUrl}}</code> 存取,但目前使用的是 <code>{{currentUrl}}</code>。若繼續操作,可能會遇到驗證問題。",
"ignoreTitle": "忽略",
"goToCorrectDomainTitle": "前往正確域名"
} No newline at end of file
"goToCorrectDomainTitle": "前往正確域名",
"authorizeTitle": "Authorize",
"authorizeCardTitle": "Continue to {{app}}?",
"authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.",
"authorizeSubtitleOAuth": "Would you like to continue to this app?",
"authorizeLoadingTitle": "Loading...",
"authorizeLoadingSubtitle": "Please wait while we load the client information.",
"authorizeSuccessTitle": "Authorized",
"authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.",
"authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.",
"authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}",
"openidScopeName": "OpenID Connect",
"openidScopeDescription": "Allows the app to access your OpenID Connect information.",
"emailScopeName": "Email",
"emailScopeDescription": "Allows the app to access your email address.",
"profileScopeName": "Profile",
"profileScopeDescription": "Allows the app to access your profile information.",
"groupsScopeName": "Groups",
"groupsScopeDescription": "Allows the app to access your group information."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Untranslated English strings in zh-TW locale.

Lines 54 and 63–80 contain English text instead of Traditional Chinese translations. Since these keys have values (albeit in English), i18next will serve the English strings directly to zh-TW users rather than falling back to a default locale. This degrades the localized experience.

If these strings are pending Crowdin translation, consider omitting them from the zh-TW file until translations are available, so the i18next fallback mechanism can display the default language consistently.

🤖 Prompt for AI Agents
In `@frontend/src/lib/i18n/locales/zh-TW.json` around lines 54 - 80, Several keys
in zh-TW are still English (e.g., "errorSubtitleInfo" and the
authorize*/openidScope*/emailScope*/profileScope*/groupsScope* keys); either
provide Traditional Chinese translations for those keys ("errorSubtitleInfo",
"authorizeTitle", "authorizeCardTitle", "authorizeSubtitle",
"authorizeSubtitleOAuth", "authorizeLoadingTitle", "authorizeLoadingSubtitle",
"authorizeSuccessTitle", "authorizeSuccessSubtitle", "authorizeErrorClientInfo",
"authorizeErrorMissingParams", "openidScopeName", "openidScopeDescription",
"emailScopeName", "emailScopeDescription", "profileScopeName",
"profileScopeDescription", "groupsScopeName", "groupsScopeDescription") or
remove those entries from the zh-TW JSON so i18next can fall back to the default
locale until proper translations are available. Ensure any replacements use
correct Traditional Chinese phrasing and keep interpolation tokens like {{app}}
and {{missingParams}} intact.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant